﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BIZMA._controls;
using BIZModel;
using BL.BIZControls;
using System.Configuration;
using System.Web.Security;
using System.Web.Configuration;

namespace BIZMA._controls.Files
{
    public partial class Edit_File : BIZEditControl, IBIZControlDefaultMethods
    {
        #region Default load functions
        public void DefaultListLoad()
        {
            throw new NotImplementedException();
        }

        public void DefaultListLoad(Guid Id, string loadByType)
        {
            throw new NotImplementedException();
        }

        public void DefaultEditNew()
        {
            throw new NotImplementedException();
        }
       
        public void DefaultEditNew(Guid Id, string editByType)
        {
            throw new NotImplementedException();
        }
       /// <summary>
       /// Man kan bara editera filer inte skapa nya. Nya filer laddar man upp
       /// </summary>
       /// <param name="Id">FileId</param>
        public void DefaultEditLoad(Guid Id)
        {
            LoadFile(Id);
        }


        #endregion

        #region Init
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack || !InitLoaded)
            {
                InitLoaded = true;
                //Gör sådant som man gör på pageload här typ fyll "statisk" dropdown med värden mm 
                //Om tabbar används i kontrollen
                //SetTabSize = true; 

            }
        }

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            //här gör man alla init inställningar tex lägga till eventhandlers och annat som styr sidan
            if (ContainerControl != null)
            {
                //Titel på containerkontrollen
                ContainerControl.Title = "Administrera fil";
                //Event vid klick på knapparna i containerkontrollen
                ContainerControl.ButtonsClick += new ButtonsHandler(ContainerControl_ButtonsClick);
                //Vilka knappar den här kontrollen använder/vill visa från containerkontrollens knappar
                ContainerControl.ShowButtons(true, true, true, true);

                if (ModalContainerControl != null)
                {
                    ModalContainerControl.Width = 700;
                    ModalContainerControl.Height = 470;
                    ModalContainerControl.FormScrollStyleChanged += new EventHandler(ModalContainerControl_FormScrollStyleChanged);
                }

                //Sätt validation group från Containercontrollen så de blir unika på sidan
                val_Name.ValidationGroup = ContainerControl.ValGroupSave;
            }
            else
            {
                //Om det inte finns någon containercontrol

                //Validation groups för validatorer i kontrollen
                val_Name.ValidationGroup = "SAVE";
            }

            //Registrera event som sker i kontrollen
        }


        #endregion
        #region Container Events
        void ModalContainerControl_FormScrollStyleChanged(object sender, EventArgs e)
        {
            //Sätter samma style (storlek) på FormPart som formscroll så den fyller hela ytan
            oneFormpart.Attributes["style"] = formscroll.Attributes["style"];
        }

        /// <summary>
        /// Triggas vid klick på någon av containerkontrollens knappar
        /// </summary>
        /// <param name="sender">Containerkontrollen</param>
        /// <param name="actionType">Vilken typ av knapp som klickats</param>
        void ContainerControl_ButtonsClick(object sender, ActionType actionType)
        {
            if (actionType == ActionType.Save || actionType == ActionType.SaveClose)
            {
                Save();
            }
            else if (actionType == ActionType.Delete)
            {
                Delete();
            }
        }


        #endregion

        #region Events This Control


        #endregion

        #region Methods this dialog



        /// <summary>
        /// Aktiverar/inaktiverar knappar som behöver data eller som inte kan visas pga underliggande dialoger 
        /// </summary>
        private void ToggleButtons()
        {
            bntFileOpen.OnClientClick = string.Format("window.open('{0}');","/Library/" + CurrentId.ToString());

            ////Sätt status om knappen kan visas pga underliggande dialoger
            //BaseBL.BtnOpenEnabled(btnPerm, CanAddPermissionDialog, ViewState);

            ////Sätt status om knappen kan visas pga data som krävs
            //if (CurrentId != Guid.Empty)
            //{
            //    if (CanAddPermissionDialog)
            //    {
            //        BaseBL.BtnNeedsDataEnabled(btnPerm, true, ViewState);
            //    }
            //}
            //else
            //{
            //    if (CanAddPermissionDialog)
            //    {
            //        BaseBL.BtnNeedsDataEnabled(btnPerm, false, ViewState);
            //    }
            //}
        }



    
        /// <summary>
        /// Kör denna metod när en fil ska ändras/visas
        /// </summary>
        /// <param name="fileId">Filen som ska laddas</param>
        public void LoadFile(Guid fileId)
        {
            InitLoaded = true;
            CurrentId = fileId;


            if (CurrentId != Guid.Empty)
            {
                BIZMAEntities ent = BaseBL.GetEnt();
                BIZModel.File file = ent.File_GetInfoNoSream(CurrentId).FirstOrDefault();
                txtName.Text = file.Name;
            }
            else
            {
                throw new ArgumentException("FileId saknas!");
            }

            ToggleButtons();
        }

        /// <summary>
        /// Spara
        /// </summary>
        private void Save()
        {
            //SAVE
            if (Page.IsValid)
            {

                BIZMAEntities ent = BaseBL.GetEnt();

                if (CurrentId == Guid.Empty)
                {
                    CurrentId = Guid.NewGuid();

                    BIZModel.File file = ent.Files.FirstOrDefault(q => q.FileId == CurrentId);
                    file.Name = txtName.Text;
                    file.Url = file.Url.Remove(file.Url.LastIndexOf('/')) + Server.UrlPathEncode(txtName.Text);

                    ent.SaveChanges();
                }
              
                //Ändra aktivering av knappar efter sparning / eller kör load metoden 
                ToggleButtons();
            }
        }

        private void Delete()
        {
            if (CurrentId != Guid.Empty)
            {
                BIZMAEntities ent = BaseBL.GetEnt();
                BIZModel.File file = ent.Files.FirstOrDefault(q => q.FileId == CurrentId);
                ent.DeleteObject(file);
                ent.SaveChanges();
            }

        }






        #endregion

        #region Sub dialog events

        #endregion




    }
}